package cn.levi.excel.validate;

import cn.hutool.core.annotation.AnnotationUtil;
import cn.hutool.core.util.StrUtil;
import cn.levi.excel.annotation.Excell;
import cn.levi.excel.module.StateBo;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.Map;
import org.springframework.stereotype.Component;

/**
 * 校验数字
 *
 * @author lei
 * @since 2024/10/15
 */
@Component
public class ValidateNumber implements ValidateExcelImport{

	/**
	 * 校验是否通过
	 *
	 * @param field         字段
	 * @param excellDataRow excel一行数据 其中key已经转还为bean属性 但是value为excel的原始数据，
	 * @return
	 */
	@Override
	public StateBo validate(Field field, Map<String, Object> excellDataRow) {
		String fieldValue = getFieldValue(field, excellDataRow);
		if (StrUtil.isBlank(fieldValue)) {
			return StateBo.success();
		}
		try {
			new BigDecimal(fieldValue);
			return StateBo.success();
		} catch (Exception e) {
			Excell excell = AnnotationUtil.getAnnotation(field, Excell.class);
			return StateBo.fail(StrUtil.format("{}格式不正确",excell.value()));
		}
	}
}
